<?php

session_start();

include ("util/Connection.php");
include ("util/ResultToJson.php");
include ("./DiretorioAux.php");

//header('Content-Type: text/html; charset=ISO-8859-15');

$method = $_GET['metodo'];

$novidades = new Novidades();
$novidades->$method();

class Novidades {

    function inserir() {
        $titulo = $_POST['titulo'];
        if (empty($titulo)) {
            echo ("HTTP/1.0 400 O título não pode estar em branco.");
            return;
        }

        $conteudo = $_POST['conteudo'];
        if (empty($conteudo)) {
            echo ("HTTP/1.0 400 O conteudo não pode estar em branco.");
            return;
        }

        $file = $_FILES['files'];
        if (empty($file)) {
            echo ("HTTP/1.0 400 Nenhuma foto selecionada.");
            return;
        }

        $con = Connection::getConnection();

        $stmt = $con->prepare("INSERT INTO novidade (titulo, conteudo) VALUES (?, ?)");
        $html = htmlentities($conteudo);
        $stmt->bind_param('ss', $titulo, $html);

        $stmt->execute();
        $count = $stmt->affected_rows;
        $novidade_id = $stmt->insert_id;

        $con->close();

        if ($count == 0) {
            echo ("HTTP/1.0 500 Falha ao inserir o registro. Contate o administrador.");
        } else {
            $pasta = '../../admin/fotos/novidades/' . $novidade_id . '/';
            $pastaSmall = '../../admin/fotos/novidades/' . $novidade_id . '/small';

            mkdir($pasta);
            mkdir($pastaSmall);

            $dir = new DiretorioAux();
            $dir->gerenciarArquivos('admin/fotos/novidades/' . $novidade_id . '/', 'admin/novidade.php?id=' . $novidade_id);
        }
    }

    function atualizar() {
        $novidade_id = $_POST['id'];
        if (empty($novidade_id)) {
            echo ("HTTP/1.0 400 Id inválido.");
            return;
        }

        $titulo = $_POST['titulo'];
        if (empty($titulo)) {
            echo ("HTTP/1.0 400 O título não pode estar em branco.");
            return;
        }

        $conteudo = $_POST['conteudo'];
        if (empty($conteudo)) {
            echo ("HTTP/1.0 400 O conteudo não pode estar em branco.");
            return;
        }

        $file = $_FILES['files'];
        if (empty($file)) {
            echo ("HTTP/1.0 400 Nenhuma foto selecionada.");
            return;
        }

        $con = Connection::getConnection();

        $stmt = $con->prepare("UPDATE novidade SET titulo = ?, conteudo = ? WHERE id = ?");
        $html = htmlentities($conteudo);
        $stmt->bind_param('ssi', $titulo, $html, $novidade_id);

        $stmt->execute();

        $con->close();

        $pasta = 'admin/fotos/novidades/' . $novidade_id;

        if (isset($_POST['ambiente'])) {
            foreach ($_POST['ambiente'] as $key => $value) {
                if (!empty($value)) {
                    list($imagem, $ambiente) = explode('/', $value);

                    $oImg = new m2brimagem('../../' . $pasta . '/' . $imagem);
                    $oImg->grava('../../admin/fotos/ambientes/' . $ambiente . '/' . $imagem);

                    $oImgSmall = new m2brimagem('../../' . $pasta . '/small/' . $imagem);
                    $oImgSmall->grava('../../admin/fotos/ambientes/' . $ambiente . '/small/' . $imagem);
                }
            }
        }

        $dir = new DiretorioAux();
        $dir->gerenciarArquivos($pasta, 'admin/novidades.php');
    }

    function excluir() {
        $novidade_id = $_POST['id'];
        if (empty($novidade_id)) {
            echo ("HTTP/1.0 400 Id inválido.");
            return;
        }

        $con = Connection::getConnection();

        $stmt = $con->prepare("DELETE FROM novidade WHERE id = ?");
        $stmt->bind_param('i', $novidade_id);

        $stmt->execute();
        $count = $stmt->affected_rows;

        $con->close();

        if ($count == 0) {
            echo ("HTTP/1.0 500 Falha ao excluir o registro. Contate o administrador.");
        } else {
            $pasta = '../../admin/fotos/novidades/' . $novidade_id . '/';

            $this->recursive_remove_directory($pasta);
        }
    }

    function recursive_remove_directory($directory, $empty = FALSE) {
        // if the path has a slash at the end we remove it here
        if (substr($directory, -1) == '/') {
            $directory = substr($directory, 0, -1);
        }

        // if the path is not valid or is not a directory ...
        if (!file_exists($directory) || !is_dir($directory)) {
            // ... we return false and exit the function
            return FALSE;

            // ... if the path is not readable
        } elseif (!is_readable($directory)) {
            // ... we return false and exit the function
            return FALSE;

            // ... else if the path is readable
        } else {

            // we open the directory
            $handle = opendir($directory);

            // and scan through the items inside
            while (FALSE !== ($item = readdir($handle))) {
                // if the filepointer is not the current directory
                // or the parent directory
                if ($item != '.' && $item != '..') {
                    // we build the new path to delete
                    $path = $directory . '/' . $item;

                    // if the new path is a directory
                    if (is_dir($path)) {
                        // we call this function with the new path
                        $this->recursive_remove_directory($path);

                        // if the new path is a file
                    } else {
                        // we remove the file
                        unlink($path);
                    }
                }
            }
            // close the directory
            closedir($handle);

            // if the option to empty is not set to true
            if ($empty == FALSE) {
                // try to delete the now empty directory
                if (!@rmdir($directory)) {
                    // return false if not possible
                    return FALSE;
                }
            }
            // return success
            return TRUE;
        }
    }

    function excluiDir($Dir) {
        if ($dd = opendir($Dir)) {
            while (false !== ($Arq = readdir($dd))) {
                if ($Arq != "." && $Arq != "..") {
                    $Path = "$Dir/$Arq";
                    if (is_dir($Path)) {
                        ExcluiDir($Path);
                    } elseif (is_file($Path)) {
                        unlink($Path);
                    }
                }
            }
            closedir($dd);
        }
        rmdir($Dir);
    }

    function getTotalNovidades() {
        $con = Connection::getConnection();

        $query = "SELECT COUNT(id) AS total FROM novidade";

        $stmt = $con->prepare($query);
        $stmt->execute();

        echo ResultToJson::getJsonToResultMysql(null, $stmt);

        $con->close();
    }

    function getNovidadesPaginada() {
        $inicio = $_GET['inicio'];

        $con = Connection::getConnection();

        $query = "SELECT id, titulo, conteudo, DATE_FORMAT(data,'%d/%m/%Y') AS data ";
        $query .= "FROM novidade ";
        $query .= "ORDER BY data DESC ";
        $query .= "LIMIT 5 OFFSET " . $inicio;

        $stmt = $con->prepare($query);
        $stmt->execute();

        echo ResultToJson::getJsonToResultMysql(null, $stmt);

        $con->close();
    }

    function getNovidades() {
        $con = Connection::getConnection();

        $query = "SELECT id, titulo, conteudo, DATE_FORMAT(data,'%d/%m/%Y') AS data ";
        $query .= "FROM novidade ";
        $query .= "ORDER BY data DESC ";

        $stmt = $con->prepare($query);
        $stmt->execute();

        echo ResultToJson::getJsonToResultMysql(null, $stmt);

        $con->close();
    }

    function getNovidade() {
        $id = $_GET['id'];

        $con = Connection::getConnection();

        $query = "SELECT id, titulo, conteudo, DATE_FORMAT(data,'%d/%m/%Y') AS data ";
        $query .= "FROM novidade ";
        $query .= "WHERE id = ? ";

        $stmt = $con->prepare($query);
        $stmt->bind_param('i', $id);
        $stmt->execute();

        echo ResultToJson::getJsonToResultMysql(null, $stmt);

        $con->close();
    }

}

?>
